package proj.reseau;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

public class Config {
	Properties configFile;
	Properties files;
	Properties leeches;

	public Config() {
		configFile = new java.util.Properties();
		files = new java.util.Properties();
		leeches = new java.util.Properties();
		try {
			InputStream inputStream = new FileInputStream("config.cfg");
			configFile.load(inputStream);
			InputStream inputStream2 = new FileInputStream(getProperty("seeds-directory")+"/files.cfg");
			files.load(inputStream2);
			InputStream inputStream3 = new FileInputStream(getProperty("leeches-directory")+"/leeches.cfg");
			leeches.load(inputStream3);
		} catch (Exception eta) {
			eta.printStackTrace();
		}
	}

	public String getProperty(String key) {
		String value = this.configFile.getProperty(key);
		return value;
	}

	/**
	 * 
	 * @param file
	 * @return La taille des pieces ou la taille par défaut si on a pas l'info dans le fichier config et on l'ajoute
	 */
	public int getSeedFilePieceSize(String file)
	{
		if(files.getProperty(file)!=null)
		{
			return Integer.parseInt(files.getProperty(file));
		}
		int size=Integer.parseInt(configFile.getProperty("default-piece-size"));
		files.setProperty(file, String.valueOf(size));
		return size;
	}
	
	/**
	 * 
	 * @param file
	 * @return La taille des pieces ou la taille par défaut si on a pas l'info dans le fichier config et on l'ajoute
	 */
	public int getLeechPieceSize(String file)
	{
		if(leeches.getProperty(file)!=null)
		{
			return Integer.parseInt(leeches.getProperty(file));
		}
		int size=Integer.parseInt(configFile.getProperty("default-piece-size"));
		leeches.setProperty(file, String.valueOf(size));
		return size;
	}
	
	public String getLeechMD5(String file)
	{
		try {
			InputStream inputStream = new FileInputStream(getProperty("leeches-directory")+"/leeches.cfg");
			leeches.load(inputStream);
			if(leeches.getProperty(file)!=null)
			{
				return leeches.getProperty("MD5_"+file);
			}
		} catch (Exception eta) {
			eta.printStackTrace();
		}
		return null;
	}
}
